home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / ussbc23.zip / LIB16 / QR20SSBC.PAS < prev    next >
Pascal/Delphi Source File  |  1997-02-17  |  3KB  |  109 lines

  1. unit Qr20ssbc;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  7.   Forms, Dialogs, StdCtrls, QRPrntr, Quickrpt, QR2Const, ssBC;
  8.  
  9. type
  10.   TQR20ssBarcode = class(TQRPrintable)
  11.   private
  12.     FBarcode : TssBarcode;
  13.  
  14.   protected
  15.     procedure Notification( AComponent: TComponent; Operation: TOperation); override;
  16.     procedure SetBarcode(Value : TssBarcode);
  17.     constructor Create(AOwner : TComponent); override;
  18.   public
  19.     procedure Print(PX,PY : integer); override;
  20.     procedure Paint; override;
  21.   published
  22.     property Barcode : TssBarcode read FBarcode write SetBarcode;
  23.   end;
  24.  
  25. procedure Register;
  26.  
  27. implementation
  28.  
  29. constructor TQR20ssBarcode.Create(AOwner : TComponent);
  30.  
  31. begin
  32.   inherited Create(AOwner);
  33.   Width:=200;
  34.   Height:=200;
  35. end;
  36.  
  37. procedure TQR20ssBarcode.SetBarcode(Value : TssBarcode);
  38.  
  39. begin
  40.   FBarcode := Value;
  41.   Invalidate;
  42. end;
  43.  
  44. procedure TQR20ssBarcode.Paint;
  45.  
  46. begin
  47.   if Assigned(FBarcode) then
  48.   begin
  49.     Width := FBarCode.Width;
  50.     Height := FBarcode.Height;
  51.     try
  52.       FBarcode.DataBits := FBarcode.CreateDatabits(Screen.PixelsPerInch);
  53.       FBarcode.AODataBits := FBarcode.CreateAODatabits(Screen.PixelsPerInch);
  54.     finally
  55.       FBarcode.DrawBarcode(Self.Canvas,0,0, Screen.PixelsPerInch);
  56.     end;
  57.   end
  58.   else
  59.   begin
  60.     if (csDesigning in ComponentState) then
  61.     with Canvas do
  62.     begin
  63.       Brush.Color := Self.Color;
  64.       Brush.Style := bsSolid;
  65.       FillRect(ClientRect);
  66.       Pen.Style := psDash;
  67.       Brush.Style := bsClear;
  68.       Rectangle(0, 0, Width, Height);
  69.       Pen.Style := psSolid;
  70.     end;
  71.   end;
  72. end;
  73.  
  74.  
  75. procedure TQR20ssBarcode.Print(PX,PY : integer);
  76. var
  77.   InchX, InchY : single;
  78.   PrnX, PrnY : integer;
  79.   POffset : TPoint;
  80.  
  81. begin
  82.   InchX := GetDeviceCaps(QRPrinter.Canvas.Handle, LOGPIXELSX);
  83.   if Assigned(FBarcode) then
  84.   begin
  85.     try
  86.       FBarcode.CodeHeight := 0;
  87.       FBarcode.DataBits := FBarcode.CreateDatabits(InchX);
  88.       FBarcode.AODataBits := FBarcode.CreateAODatabits(InchX);
  89.     finally
  90.       FBarcode.DrawBarcode(QRPrinter.Canvas,QRPrinter.XPos(PX+Size.Left), QRPrinter.YPos(PY+Size.Top), InchX);
  91.     end;
  92.   end;
  93. end;
  94.  
  95. procedure TQR20ssBarcode.Notification(AComponent: TComponent; Operation: TOperation);
  96.  
  97. begin
  98.   inherited Notification(AComponent, Operation);
  99.   if (Operation=opRemove) and (AComponent=FBarcode) then
  100.     SetBarcode(nil);
  101. end;
  102.  
  103. procedure Register;
  104. begin
  105.   RegisterComponents('Soft Sector', [TQR20ssBarcode]);
  106. end;
  107.  
  108. end.
  109.